<?php

/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\Models\User\User;
use App\Models\User\Address;
use Faker\Generator as Faker;

/*
|--------------------------------------------------------------------------
| Model Factories
|--------------------------------------------------------------------------
|
| This directory should contain each of the model factory definitions for
| your application. Factories provide a convenient way to generate new
| model instances for testing / seeding your application's database.
|
*/

$factory->define(User::class, function (Faker $faker) {
//    return [
//        'name' => $faker->name,
//        'email' => $faker->unique()->safeEmail,
//        'email_verified_at' => now(),
//        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
//        'remember_token' => Str::random(10),
//    ];
    return [
        'username' => $faker->name,
        'password' => Hash::make("123456"),
        'gender' => $faker->randomKey([0, 1, 2]),
        'mobile' => $faker->phoneNumber,
        'avatar' => $faker->imageUrl(),
    ];
});

$factory->define(Address::class, function (Faker $faker) {
   return [
     "name" => $faker->name,
     "user_id" => 0,
     "province" => '浙江省',
     "city" => "杭州市",
     "county" => '西湖区',
     "address_detail" => $faker->streetAddress,
     "area_code" => '',
     "postal_code" => $faker->postcode,
     "tel" => $faker->phoneNumber,
     "is_default" => 0,
   ];
});

$factory->state(User::class, 'address_default', function () {
    return [];
})->afterCreatingState(User::class, 'address_default', function ($user) {
    factory(Address::class)->create([
        "user_id" => $user->id,
        "is_default" => 1
    ]);
});
